clear all

use policy_combined_v4.dta, replace

***Drop missing values***
drop if utility_type==.
drop if disconnected==.
drop if forego_expenses==.
drop if energy_assistance==.
drop if total_covered==.
drop if hh_under5==.
drop if hhsize==.
drop if ownhome==.
drop if hh_over65==.

**Encode respondent ID's**
destring caseid_w1, generate(id)
encode utility, generate(utility2)

svyset id [pweight=weight]

describe id month disconnected total_covered
summarize id month disconnected total_covered

sort id month
xtset id month
xtdescribe
xtsum id month disconnected total_covered

**Clean variables**
gen not_covered=0
replace not_covered=1 if total_covered==0

recode gender (2=0)
gen female=0
replace female=1 if gender==0

recode hh_under5 (2=1) (3=1) (4=1)

drop iou muni coop
gen muni=0
replace muni=1 if utility_type==1
gen iou=0
replace iou=1 if utility_type==2
gen coop=0
replace coop=1 if utility_type==3

label define month_label  1 "May" 2 "June" 3 "July" 4 "August" 5 "September" 6 "October" 7 "November" 8 "December" 9 "January" 10 "February" 11 "March" 12 "April" 13 "May2"
label val month month_label

save disconnection_data.dta, replace
use disconnection_data.dta, clear

**Balancing Table covered moratorium and voluntary**
**Table 4**
eststo clear
estpost summarize black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 coop muni iou if total_covered==0 & month==1
esttab using table4.rtf, cells("count(fmt(a2)) mean sd min max") label title("Not Covered") nomtitle nonumbe noobs replace
estpost summarize black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 coop muni iou if total_covered==1 & month==1
esttab using table4.rtf, cells("count(fmt(a2)) mean sd min max") label title("Covered") nomtitle nonumbe noobs append

**Table S6**
eststo clear
estpost summarize black hispanic unemployed educ under_100_fpl hh_under5 hhsize coop muni iou if total_covered==0
esttab using tableS6.rtf, cells("count(fmt(a2)) mean sd min max") label title("Not Covered") nomtitle nonumbe noobs replace
estpost summarize black hispanic unemployed educ under_100_fpl hh_under5 hhsize coop muni iou if total_covered==1
esttab using tableS6.rtf, cells("count(fmt(a2)) mean sd min max") label title("Covered") nomtitle nonumbe noobs append

**Generate lags**
gen wap_liheap=0
replace wap_liheap=1 if wap==1 | liheap==1

sort month id
by month: gen wapliheap_lag1=wap_liheap[_n-1]

gen other_assistance=0
replace other_assistance=1 if snap==1 | tanf==1 | medicaid==1 | vet_benefits==1 | unemp_insurance==1

sort month id
by month: gen otherassistance_lag1=other_assistance[_n-1]

recode ownhome (2=0) (3=0)

set scheme s2color

xi i.state
xi i.month
xi i.utility
xi i.id

**Figure 3***
egen disconnect_month=mean(100*disconnected), by(month)
egen forego_month=mean(100*forego), by(month)
egen assist_month=mean(100*energy_assist),by(month)

set scheme s1color
twoway (tsline disconnect_month, lpattern(dash)) (tsline forego_month, lpattern(longdash_shortdash)) (tsline assist_month), ylabel(0 (2) 20) ytitle (Percentage of Respondents) tlabel(1 (1) 9 1"May 2020" 2"June" 3"July" 4"August" 5"September" 6"October" 7"November" 8"December" 9"January" 10"February" 11"March" 12"April" 13"May 2021", labsize(small)) xtitle("") legend(label(1 "Disconnected") label(2 "Forgo Expenses") label(3 "Financial Assistance") col(3)) xsize(7.5) tline(1 4 9 13, lp(dash) lc(gray))
gr export tsline_may.png, replace

**Table 5 descriptives**
svy: mean disconnected
estat sd
svy: mean forego_expenses
estat sd
svy: mean energy_assistance
estat sd
svy: mean covered_moratorium
estat sd
svy: mean total_covered
estat sd
svy: mean wapliheap_lag1
estat sd
svy: mean otherassistance_lag1
estat sd
svy: mean black
estat sd
svy: mean hispanic
estat sd
svy: mean unemployed
estat sd
svy: mean educ
estat sd
svy: mean under_100_fpl
estat sd
svy: mean hh_under5
estat sd
svy: mean hhsize
estat sd
svy: mean ownhome
estat sd
svy: mean hh_over65
estat sd
svy: mean coop
estat sd
svy: mean iou
estat sd



*****REGRESSION GLOBALS*****
global mandatory covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state

global covered total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state

global days_mandatory dayscovered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state

global days_covered dayscovered_total wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state

gen interact=month*state

global interact_mandatory covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state i.interact

global interact_covered total_covered wapliheap_lag1 otherassistance_lag1  black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state i.interact



*****after analysis (month after policy expired)****
sort month id
by month: gen moratorium_lag1=covered_moratorium[_n-1]

gen policy_post=0
replace policy_post=1 if moratorium_lag1==1 & covered_moratorium==0

reg disconnected policy_post wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize iou coop i.month i.state
margins, at(policy_post=(0(1)1)) atmeans
marginsplot, xtitle(Covered) ytitle(Probability of Disconnection)


reg utility_debt policy_post wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize iou coop i.month i.state


egen debtmean = mean(utility_debt), by(month)

tab debtmean


gen any_ei = 0
replace any_ei=1 if disconnected==1 | forego_expenses==1 | energy_assist==1

reg any_ei covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize iou coop i.month i.state

******


***Check that states did not adopt protections because of high disconnection rates in the previous year***
gen ever_covered=.
replace ever_covered=0 if covered_moratorium==0 & month==1
replace ever_covered=0 if covered_moratorium==0 & month==2
replace ever_covered=0 if covered_moratorium==0 & month==3
replace ever_covered=0 if covered_moratorium==0 & month==4
replace ever_covered=0 if covered_moratorium==0 & month==5
replace ever_covered=0 if covered_moratorium==0 & month==6
replace ever_covered=0 if covered_moratorium==0 & month==7
replace ever_covered=0 if covered_moratorium==0 & month==8
replace ever_covered=0 if covered_moratorium==0 & month==9
replace ever_covered=0 if covered_moratorium==0 & month==10
replace ever_covered=0 if covered_moratorium==0 & month==11
replace ever_covered=0 if covered_moratorium==0 & month==12
replace ever_covered=0 if covered_moratorium==0 & month==13

replace ever_covered=1 if covered_moratorium==1 & month==1
replace ever_covered=1 if covered_moratorium==1 & month==2
replace ever_covered=1 if covered_moratorium==1 & month==3
replace ever_covered=1 if covered_moratorium==1 & month==4
replace ever_covered=1 if covered_moratorium==1 & month==5
replace ever_covered=1 if covered_moratorium==1 & month==6
replace ever_covered=1 if covered_moratorium==1 & month==7
replace ever_covered=1 if covered_moratorium==1 & month==8
replace ever_covered=1 if covered_moratorium==1 & month==9
replace ever_covered=1 if covered_moratorium==1 & month==10
replace ever_covered=1 if covered_moratorium==1 & month==11
replace ever_covered=1 if covered_moratorium==1 & month==12
replace ever_covered=1 if covered_moratorium==1 & month==13

**Table A4**
reg disconnect_previousyear ever_covered black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight]
outreg2 using previous.rtf, keep(ever_covered black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) replace

reg disconnect_previousyear dayscovered_moratorium black hispanic unemployed educ under_100_fpl hh_under5 hhsize iou coop i.month i.state [pweight=weight]
outreg2 using previous.rtf, keep(dayscovered_moratorium black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append



**Table 1 Column 1**
reg disconnected $mandatory [pweight=weight] 
margins, at(covered_moratorium=(0(1)1)) atmeans
marginsplot, xtitle(Covered) ytitle(Probability of Disconnection)
gr export disconnected.png, replace
outreg2 using table1.rtf, keep(covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) replace

**Table 1 Column 2**
reg disconnected $covered [pweight=weight] 
outreg2 using table1.rtf, keep(total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table 2 Column 1**
reg forego_expenses $mandatory [pweight=weight] 
margins, at(covered_moratorium=(0(1)1)) atmeans
marginsplot, xtitle(Covered) ytitle(Probability of Forgoing Expenses)
gr export forgo.png, replace
outreg2 using table2.rtf, keep(covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) replace

**Table 2 Column 2**
reg forego_expenses $covered [pweight=weight] 
outreg2 using table2.rtf, keep(total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table 2 Column 4**
reg energy_assistance $mandatory [pweight=weight] 
outreg2 using table2.rtf, keep(covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table 2 Column 5**
reg energy_assistance $covered [pweight=weight] 
outreg2 using table2.rtf, keep(total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append


**Table S1 Column 1 Row 1**
reg disconnected covered_moratorium wapliheap_lag1 otherassistance_lag1 /*black*/ hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if black==1 
est store a
outreg2 using tableS1.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) replace

**Table S1 Column 1 Row 2**
reg disconnected total_covered wapliheap_lag1 otherassistance_lag1 /*black*/ hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if black==1 
outreg2 using tableS1.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S1 Column 2 Row 1**
reg disconnected covered_moratorium wapliheap_lag1 otherassistance_lag1 black /*hispanic*/ unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if hispanic==1 
est store b
outreg2 using tableS1.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S1 Column 2 Row 2**
reg disconnected total_covered wapliheap_lag1 otherassistance_lag1 black /*hispanic*/ unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if hispanic==1 
outreg2 using tableS1.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S1 Column 3 Row 1**
reg disconnected covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ /*under_100_fpl*/ hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if under_100_fpl==1 
est store c
outreg2 using tableS1.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S1 Column 3 Row 2**
reg disconnected total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ /*under_100_fpl*/ hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if under_100_fpl==1 
outreg2 using tableS1.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S1 Column 4 Row 1**
reg disconnected covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic /*unemployed*/ educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if unemployed==1 
outreg2 using tableS1.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S1 Column 4 Row 2**
reg disconnected total_covered wapliheap_lag1 otherassistance_lag1 black hispanic /*unemployed*/ educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if unemployed==1   
outreg2 using tableS1.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S1 Column 5 Row 1**
reg disconnected covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl /*hh_under5*/ hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if hh_under5==1 
est store d
outreg2 using tableS1.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

label variable covered_moratorium "Covered"
coefplot (a, label(Black)) ///
		 (b, label(Hispanic)) ///
		 (c, label(Under 100% FPL)) ///
		 (d, label(Children under 5)) ///
		 , keep(covered_moratorium) xline (0) title ("Probability of Disconnection")
		 gr export coefplot.png, replace

**Table S1 Column 5 Row 2**
reg disconnected total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl /*hh_under5*/ hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if hh_under5==1  
outreg2 using tableS1.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append



**Table S2 Column 1 Row 1**
reg forego_expenses covered_moratorium wapliheap_lag1 otherassistance_lag1 /*black*/ hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if black==1 
est store e
outreg2 using tableS2.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) replace

**Table S2 Column 1 Row 2**
reg forego_expenses total_covered wapliheap_lag1 otherassistance_lag1 /*black*/ hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if black==1 
outreg2 using tableS2.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S2 Column 2 Row 1**
reg forego_expenses covered_moratorium wapliheap_lag1 otherassistance_lag1 black /*hispanic*/ unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if hispanic==1 
outreg2 using tableS2.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S2 Column 2 Row 2**
reg forego_expenses total_covered wapliheap_lag1 otherassistance_lag1 black /*hispanic*/ unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if hispanic==1 
outreg2 using tableS2.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S2 Column 3 Row 1**
reg forego_expenses covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ /*under_100_fpl*/ hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if under_100_fpl==1  
est store f
outreg2 using tableS2.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S2 Column 3 Row 2**
reg forego_expenses total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ /*under_100_fpl*/ hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if under_100_fpl==1 
outreg2 using tableS2.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S2 Column 4 Row 1**
reg forego_expenses covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic /*unemployed*/ educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if unemployed==1 
outreg2 using tableS2.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S2 Column 4 Row 2**
reg forego_expenses total_covered wapliheap_lag1 otherassistance_lag1 black hispanic /*unemployed*/ educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if unemployed==1  
outreg2 using tableS2.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S2 Column 5 Row 1**
reg forego_expenses covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl /*hh_under5*/ hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if hh_under5==1 
est store g
outreg2 using tableS2.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S2 Column 5 Row 2**
reg forego_expenses total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl /*hh_under5*/ hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if hh_under5==1  
outreg2 using tableS2.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append


**Table S3 Column 1 Row 1**
reg energy_assist covered_moratorium wapliheap_lag1 otherassistance_lag1 /*black*/ hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if black==1 
est store e
outreg2 using tableS3.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) replace

**Table S3 Column 1 Row 2**
reg energy_assist total_covered wapliheap_lag1 otherassistance_lag1 /*black*/ hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if black==1 
outreg2 using tableS3.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S3 Column 2 Row 1**
reg energy_assist covered_moratorium wapliheap_lag1 otherassistance_lag1 black /*hispanic*/ unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if hispanic==1 
outreg2 using tableS3.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S3 Column 2 Row 2**
reg energy_assist total_covered wapliheap_lag1 otherassistance_lag1 black /*hispanic*/ unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if hispanic==1 
outreg2 using tableS3.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S3 Column 3 Row 1**
reg energy_assist covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ /*under_100_fpl*/ hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if under_100_fpl==1  
est store f
outreg2 using tableS3.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S3 Column 3 Row 2**
reg energy_assist total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ /*under_100_fpl*/ hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if under_100_fpl==1 
outreg2 using tableS3.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S3 Column 4 Row 1**
reg energy_assist covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic /*unemployed*/ educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if unemployed==1 
outreg2 using tableS3.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S3 Column 4 Row 2**
reg energy_assist total_covered wapliheap_lag1 otherassistance_lag1 black hispanic /*unemployed*/ educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if unemployed==1  
outreg2 using tableS3.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S3 Column 5 Row 1**
reg energy_assist covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl /*hh_under5*/ hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if hh_under5==1 
est store g
outreg2 using tableS3.rtf, keep(covered_moratorium /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S3 Column 5 Row 2**
reg energy_assist total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl /*hh_under5*/ hhsize ownhome hh_over65 iou coop i.month i.state [pweight=weight] if hh_under5==1  
outreg2 using tableS3.rtf, keep(total_covered /*wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop*/) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

label variable covered_moratorium "Covered"
coefplot (e, label(Black)) ///
		 (f, label(Under 100% FPL)) ///
		 (g, label(Children under 5)) ///
		 , keep(covered_moratorium) xline (0) title ("Probability of Forgoing Expenses")
		 gr export coefplot_forgo.png, replace




**Table S9 Column 1**
reg disconnected $days_mandatory [pweight=weight] 
outreg2 using tableS9.rtf, keep($days_mandatory) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) replace

**Table S9 Column 2**
reg disconnected $days_covered [pweight=weight] 
outreg2 using tableS9.rtf, keep($days_covered) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S9 Column 4**
reg forego_expenses $days_mandatory [pweight=weight] 
outreg2 using tableS9.rtf, keep($days_mandatory) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S9 Column 5**
reg forego_expenses $days_covered [pweight=weight] 
outreg2 using tableS9.rtf, keep($days_covered) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S9 Column 7**
reg energy_assistance $days_mandatory [pweight=weight] 
outreg2 using tableS9.rtf, keep($days_mandatory) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S9 Column 8**
reg energy_assistance $days_covered [pweight=weight] 
outreg2 using tableS9.rtf, keep($days_covered) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append







**Table S4 Column 1**
reg disconnected $interact_mandatory [pweight=weight] 
outreg2 using tableS4.rtf, keep(covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) replace

**Table S4 Column 2**
reg disconnected $interact_covered [pweight=weight] 
outreg2 using tableS4.rtf, keep(total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S4 Column 4**
reg forego_expenses $interact_mandatory [pweight=weight] 
outreg2 using tableS4.rtf, keep(covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S4 Column 5**
reg forego_expenses $interact_covered [pweight=weight] 
outreg2 using tableS4.rtf, keep(total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S4 Column 7**
reg energy_assistance $interact_mandatory [pweight=weight] 
outreg2 using tableS4.rtf, keep(covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S4 Column 8**
reg energy_assistance $interact_covered [pweight=weight] 
outreg2 using tableS4.rtf, keep(total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append




**Table S7 Column 1**
logit disconnected $mandatory [pweight=weight] 
outreg2 using tableS7.rtf, keep(covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) replace

**Table S7 Column 2**
logit disconnected $covered [pweight=weight] 
outreg2 using tableS7.rtf, keep(total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S7 Column 4**
logit forego_expenses $mandatory [pweight=weight] 
outreg2 using tableS7.rtf, keep(covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S7 Column 5**
logit forego_expenses $covered [pweight=weight] 
outreg2 using tableS7.rtf, keep(total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S7 Column 7**
logit energy_assistance $mandatory [pweight=weight] 
outreg2 using tableS7.rtf, keep(covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S7 Column 8**
logit energy_assistance $covered [pweight=weight] 
outreg2 using tableS7.rtf, keep(total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append



**Supplemental table S12*
*just IOUs*
reg disconnected $mandatory [pweight=weight] if iou==1
outreg2 using tableS12.rtf, keep(covered_moratorium) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) replace

*just Co-ops*
reg disconnected $mandatory [pweight=weight] if coop==1
outreg2 using tableS12.rtf, keep(covered_moratorium) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append


*just Munis*
reg disconnected $mandatory [pweight=weight] if muni==1
outreg2 using tableS12.rtf, keep(covered_moratorium) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append


***balanced regressions***
drop if weight_balanced==.

**Table S5 Column 1**
reg disconnected $mandatory [pweight=weight_balanced] 
outreg2 using tableS5.rtf, keep(covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) replace

**Table S5 Column 2**
reg disconnected $covered [pweight=weight_balanced] 
outreg2 using tableS5.rtf, keep(total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S5 Column 4**
reg forego_expenses $mandatory [pweight=weight_balanced] 
outreg2 using tableS5.rtf, keep(covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S5 Column 5**
reg forego_expenses $covered [pweight=weight_balanced] 
outreg2 using tableS5.rtf, keep(total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S5 Column 7**
reg energy_assistance $mandatory [pweight=weight_balanced] 
outreg2 using tableS5.rtf, keep(covered_moratorium wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append

**Table S5 Column 8**
reg energy_assistance $covered [pweight=weight_balanced] 
outreg2 using tableS5.rtf, keep(total_covered wapliheap_lag1 otherassistance_lag1 black hispanic unemployed educ under_100_fpl hh_under5 hhsize ownhome hh_over65 iou coop) stats(coef se) alpha(0.01, 0.05, 0.1) dec(3) pdec(3) append